/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package dao;

import model.Usuario;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;

public class UsuarioDao {

    public boolean insere(Usuario cliente) throws SQLException, UsuarioDuplicadoException {
        String sql = "INSERT INTO usuarios(id,nome,login, senha) VALUES(?,?,?,?)";
        bancoCasehd banco = new bancoCasehd();
        Connection con = banco.getConexao().getInnerConnection();

        try {
            PreparedStatement ptm = con.prepareStatement(sql);
            ptm.setInt(1, cliente.getId());
            ptm.setString(2, cliente.getNome());
            ptm.setString(3, cliente.getLogin());
            ptm.setString(4, cliente.getSenha());
            int row = ptm.executeUpdate();
            if (row == 1) {
                return true;
            }
        } catch (SQLException e) {
            if (e.getMessage().indexOf("Duplicate entry") != -1) {
                throw new UsuarioDuplicadoException(String.format("Usuário \"%s\" já existe! Escolha outro usuário!", cliente.getLogin()));
            }
            e.printStackTrace();
        }
        return false;
    }

    public ArrayList lista() throws SQLException {
        Usuario usuario = null;
        ArrayList listUser = new ArrayList();
        String sql = "select * from usuarios";

        bancoCasehd banco = new bancoCasehd();
        Connection con = banco.getConexao().getInnerConnection();

        Statement stmt = null;
        ResultSet rs = null;
        stmt = con.createStatement();
        rs = stmt.executeQuery(sql);
        while (rs.next()) {
            usuario = new Usuario();
            usuario.setNome(rs.getString("nome"));
            usuario.setLogin(rs.getString("login"));
            usuario.setSenha(rs.getString("senha"));
            usuario.setId(rs.getInt("id"));
            listUser.add(usuario);
        }
        return listUser;
    }

    public Usuario login(Usuario usuario) throws SQLException {

        String sql = "select * from usuarios where login = ? and senha = ?";
        bancoCasehd banco = new bancoCasehd();
        Connection con = banco.getConexao().getInnerConnection();
        try {
            PreparedStatement ptm = con.prepareStatement(sql);
            ptm.setString(1, usuario.getLogin());
            ptm.setString(2, usuario.getSenha());
            ResultSet row = ptm.executeQuery();
            while (row.next()) {
                //usuario= new Usuario();
                usuario.setNome(row.getString("nome"));
                usuario.setId(row.getInt("id"));
                return usuario;
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return null;
    }
}
